package com.cyt.work.enrollment.service;

import com.cyt.base.model.dto.ReturnResult;
import com.cyt.sys.model.po.SysUser;
import com.cyt.sys.service.BaseService;
import com.cyt.work.enrollment.model.po.EnrollmentHomeinfo;
import com.cyt.work.enrollment.model.po.EnrollmentRule;
import com.cyt.work.enrollment.model.po.EnrollmentStuinfo;
import com.cyt.work.enrollment.model.vo.EnrollmentStuinfoVo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 自主招生-招生学生信息Service层接口类
 *
 * @author caideyong
 * @date 2019-11-22 16:30:39
 */
public interface EnrollmentStuinfoService extends BaseService<EnrollmentStuinfo> {

    /**
     * 查询对象集合
     *
     * @param enrollmentStuinfoVo 对象
     * @return List 对象集合
     * @author caideyong
     * @date 2019-11-22 16:30:39
     */
    List<EnrollmentStuinfo> listExample(EnrollmentStuinfoVo enrollmentStuinfoVo);

    /**
     * 分页查询
     *
     * @param enrollmentStuinfoVo 接受参数对象
     * @param pageNum             分页数
     * @param pageSize            每页显示条数
     * @return ReturnResult
     * @author caideyong
     * @date 2019-11-22 16:30:39
     */
    ReturnResult page(EnrollmentStuinfoVo enrollmentStuinfoVo, int pageNum, int pageSize);

    /**
     * 添加或更新
     *
     * @param enrollmentStuinfoVo 参数接受对象
     * @param sysUser             当前用户
     * @return ReturnResult
     * @author caideyong
     * @date 2019-11-22 16:30:39
     */
    ReturnResult addOrUpdate(EnrollmentStuinfoVo enrollmentStuinfoVo, SysUser sysUser);

    ReturnResult addOrUpdatePhone(EnrollmentStuinfoVo enrollmentStuinfoVo);
    /**
     * 审核
     *
     * @param enrollmentStuinfoVo 参数接受对象
     * @param sysUser             当前用户
     * @return ReturnResult
     * @author caideyong
     * @date 2019-11-22 16:30:39
     */
    ReturnResult check(EnrollmentStuinfoVo enrollmentStuinfoVo, SysUser sysUser);

    /**
     * 一键审核
     *
     * @param enrollmentStuinfoVo 参数接受对象
     * @param sysUser             当前用户
     * @return ReturnResult
     * @author caideyong
     * @date 2019-11-22 16:30:39
     */
    ReturnResult checkAll(EnrollmentStuinfoVo enrollmentStuinfoVo, SysUser sysUser);

    /**
     * 根据条件逻辑删除
     *
     * @param enrollmentStuinfoVo 参数接受对象
     * @param sysUser             当前用户
     * @return ReturnResult
     * @author caideyong
     * @date 2019-11-22 16:30:39
     */
    ReturnResult remove(EnrollmentStuinfoVo enrollmentStuinfoVo, SysUser sysUser);

    /**
     * 根据条件物理删除
     *
     * @param enrollmentStuinfoVo 参数接受对象
     * @param sysUser             当前用户
     * @return ReturnResult
     * @author caideyong
     * @date 2019-11-22 16:30:39
     */
    ReturnResult delete(EnrollmentStuinfoVo enrollmentStuinfoVo, SysUser sysUser);

    /**
     * 导入学生报名信息
     *
     * @return ReturnResult
     * @author caideyong
     * @date 2019/12/5
     */
    ReturnResult importData(HttpServletRequest request, MultipartFile file, String catalog, String update, String applyId, SysUser sysUser,String releaseId);

    /**
     * 导出数据
     * @author caideyong
     * @date 2019/12/5
     * @param response         响应对象
     * @param enrollmentStuinfoVo 传入参数对象
     * @return void
     */
    void export(HttpServletResponse response,EnrollmentStuinfoVo enrollmentStuinfoVo);

    /**
     * 批量保存
     *
     * @author caideyong
     * @date 2019/11/27
     */
    void insertList(List<EnrollmentStuinfo> enrollmentStuinfos);

    List<EnrollmentStuinfo> getSchoolNum(EnrollmentStuinfoVo enrollmentStuinfoVo);

    List<EnrollmentStuinfo> getSexNum(EnrollmentStuinfoVo enrollmentStuinfoVo);

    List<EnrollmentStuinfo> getSchoolPlaceNum(EnrollmentStuinfoVo enrollmentStuinfoVo);

    void updateUnchecked(EnrollmentStuinfoVo enrollmentStuinfoVo);

}